/**
 * @Copyright ®2015 Sinosoft Co. Ltd. All rights reserved.
 * 项目名称 : 网站服务平台
 * 创建日期 : 2016-11-14
 * 修改历史 :
 * 1. [2016-11-14]创建文件 by chenxin
 */
package com.sinosoft.sinopay.paytrade.biz.service;

import com.sinosoft.sinopay.paytrade.dto.PayTradeNotifyRecordDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentConfirmDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentRequestDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentTradeBatchDTO;
import com.sinosoft.sinopay.paytrade.dto.PaymentTradeReqDTO;
import com.sinosoft.sinopay.paytrade.dto.UserAuthConfInfo;

/**
 * 【支付交易核心服务接口】
 * @author chenxin
 * @date 2016-11-14 下午4:54 
 * @version V1.0
 */
public interface PaymentTradeCoreService {

	 /**
     * 新支付交易请求确认生效
     * @param PayNo 订单号
     */
	UserAuthConfInfo comfirmNewPaymentRequest(String PayNo);
    
    /**
     * 新增支付交易请求
     * @param cPayReqInfo   支付请求信息
     * @return 支付业务号
     */
    String addNewPayTrade(PaymentRequestDTO cPayReqInfo);

    /**
     * 新支付交易请求确认生效
     * @param cPayConfirmInfo 支付确认详细信息
     */
    int modifyTradeOrderStatus(PaymentConfirmDTO cPayConfirmInfo);

    /**
     * 插入支付主表相关信息
     * @param cPaymentTradeReqDTO 支付主表相关信息
     */
    int addPaymentInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);

    /**
     * 方法的功能描述：根据批次号 或者订单号-修改支付交易表支付信息 
     * @param cPaymentTradeReqDTO
     * @return 成功返回受影响行数， 失败返回0； 查询条件为空返回-1 ；
     */
    int modifyPaymentInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);
	
	/** 
	 * 新增支付交易订单批次信息
	 * @param cPaymentTradeReqDTO 交易订单信息
	 * @return 批次号
	 */
	String addTransOrderBatchInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);
	
	/** 
	 * 修改交易订单批次表
	 * @param cPayReqInfo 交易订单信息
	 * @return 支付号码
	 */
	int modifyTransOrderBatchInfo(PaymentTradeReqDTO cPaymentTradeReqDTO);


	/**   
	 * 新增批量支付信息
	 * @param cPaymentTradeReqDTO 批量支付交易信息
	 */
	int addBulkPaymentInfo(PaymentTradeBatchDTO cPaymentTradeBatchDTO);
	/**  
	 * 修改批量支付信息
	 * @param cPaymentTradeReqDTO 支付交易信息
	 */
	int modifyBatchPaymentInfo(PaymentTradeBatchDTO cPaymentTradeBatchDTO);

	/**
	 * 新增报盘记录数据
	 * @param cPayConfirmInfo 报盘信息
	 */
	int addOfferRecordData(PaymentTradeBatchDTO cPaymentTradeBatchDTO);
	/**  
	 * 修改报盘记录数据
	 * @param cPayConfirmInfo 报盘信息
	 */
	int modifyOfferRecordData(PaymentTradeBatchDTO cPaymentTradeBatchDTO);
	

	/**  
	* 新增交易支付关系
	* @param cPayConfirmInfo 支付关系信息
	*/
	int addTransePayRelate(PaymentTradeReqDTO cPaymentTradeReqDTO);
	/**  
	* 修改支付关系表
	* @param cPayConfirmInfo 支付关系信息
	*/
	int modifyTransePayRelate(PaymentTradeReqDTO cPaymentTradeReqDTO);
	

	/**  
	* 新增支付交易回调信息 
	* @param cPayConfirmInfo 支付交易回调记录表
	* @return  系统流水号
	*/
	int addPayTradeNotifyRecord(PayTradeNotifyRecordDTO cPayTradeNotifyRecordDTO);
	/**  
	* 修改支付交易回调信息
	* @param cPayConfirmInfo 支付交易回调记录表
	*/
	int modifyPayTradeNotifyRecord(PayTradeNotifyRecordDTO cPayTradeNotifyRecordDTO);

	/**  
	* 支付交易回调记录日志表 数据新增  
	* @param cPayConfirmInfo 支付交易回调记录日志表
	*/
	int addPayTradeNotifyRecordLog(PayTradeNotifyRecordDTO cPayTradeNotifyRecordDTO);
	
	/**
     * 方法的功能描述：根据交易批次号 、账号、账号名、金额 -修改支付交易表 批量支付结果 信息 
     * @param cPaymentTradeReqDTO
     * @return 受影响行数
     */
    int modifyPaymentInfoForBatch(PaymentTradeReqDTO cPaymentTradeReqDTO);
		
}
